﻿/*   
    Copyright (C) 2009 Galaktika Corporation ZAO

    This file is a part of Galaktika.BusinessMonitor
 
    Galaktika.BusinessMonitor is a free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
      
    You should have received a copy of the GNU General Public License
    along with Galaktika.BusinessMonitor.  If not, see <http://www.gnu.org/licenses/>.
  
    If GPL v.3 is not suitable for your products or company,
    Galaktika Corp provides Galaktika.BusinessMonitor under a flexible commercial license
    designed to meet your specific usage and distribution requirements.
    If you have already obtained a commercial license from Galaktika Corp,
    you can use this file under those license terms.
*/

using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Ranet.AgOlap.Controls;
using Galaktika.BI.Runtime.Services;
using System.ComponentModel;
using Galaktika.BI.Silverlight.Controls.General;
using Ranet.AgOlap.Controls.General;
using System.Collections.Generic;
using Galaktika.BI.Runtime;

namespace Galaktika.BI.Silverlight.Controls.ValueCopy
{
    public class ValueCopyDesignerControlEx : ValueCopyDesignerControl, IBindableObject, IEditableObject
    {
        public ValueCopyDesignerControlEx()
        {
        }

        protected override IDataLoader GetOlapDataLoader()
        {
            OlapDataLoaderEx loader = new OlapDataLoaderEx(this);
            loader.Context = this.Context;
            return loader;
        }

        protected override IStorageManager GetStorageManager()
        {
            StorageManagerEx loader = new StorageManagerEx(this);
            loader.Context = this.Context;
            return loader;
        }

        #region IEditableObject Members

        public void BeginEdit()
        {
        }

        public void CancelEdit()
        {
        }

        public void EndEdit()
        {
            Initialize();
        }
        #endregion

        #region IBindableObject Members

        IBindingContext m_Context = null;
        public IBindingContext Context
        {
            get
            {
                return m_Context;
            }
            set
            {
                m_Context = value;

                OlapDataLoaderEx loader = OlapDataLoader as OlapDataLoaderEx;
                if (loader != null)
                {
                    loader.Context = value;
                }

                StorageManagerEx storageManager = StorageManager as StorageManagerEx;
                if (storageManager != null)
                {
                    storageManager.Context = value;
                }

                if (m_Context != null)
                {
                    base.LogManager = new LogManagerEx(m_Context);
                }
            }
        }


        private IDictionary<string, IBindingManager> m_Bindings;
        public IDictionary<string, IBindingManager> Bindings
        {
            get
            {
                if (m_Bindings == null)
                {
                    m_Bindings = new SafeDictionary<string, IBindingManager>();
                }

                return m_Bindings;
            }
        }

        #endregion

        #region Свойства для настройки на OLAP

        /// <summary>
        /// Описание соединения с БД
        /// </summary>
        public String AConnection
        {
            set
            {
                Connection = value;
            }
            get
            {
                return Connection;
            }
        }

        public String ACubeName
        {
            get
            {
                return CubeName;
            }
            set
            {
                CubeName = value;
            }
        }

        public String AQuery
        {
            get
            {
                return Query;
            }
            set
            {
                Query = value;
            }
        }

        #endregion Свойства для настройки на OLAP
    }
}
